package simple;
/*
 * @(#)SimpleWrite.java	1.12 98/06/25 SMI
 *
 * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Sun grants you ("Licensee") a non-exclusive, royalty free, license 
 * to use, modify and redistribute this software in source and binary
 * code form, provided that i) this copyright notice and license appear
 * on all copies of the software; and ii) Licensee does not utilize the
 * software in a manner which is disparaging to Sun.
 *
 * This software is provided "AS IS," without a warranty of any kind.
 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
 * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
 * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE
 * SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS
 * BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
 * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
 * HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING
 * OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 * This software is not designed or intended for use in on-line control
 * of aircraft, air traffic, aircraft navigation or aircraft
 * communications; or in the design, construction, operation or
 * maintenance of any nuclear facility. Licensee represents and
 * warrants that it will not use or redistribute the Software for such
 * purposes.
 */

import java.io.*;
import java.util.*;

import javax.comm.*;

public class SimpleWrite {
    static Enumeration portList;
    static CommPortIdentifier portId;
    static String messageString = "Hello, world!\n";
    static SerialPort serialPort;
    static OutputStream outputStream;

    public static void main(String[] args) {
        portList = CommPortIdentifier.getPortIdentifiers();

        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL && !portId.isCurrentlyOwned()) {
                // if (portId.getName().equals("COM1")) {
                if (portId.getName().equals("COM11")) {
                    try {
                        serialPort = (SerialPort)portId.open("JSpoorloos", 2000);
                        serialPort.notifyOnDataAvailable(true);
                        serialPort.addEventListener(new SerialPortEventListener(){

							@Override
							public void serialEvent(SerialPortEvent arg) {
								switch (arg.getEventType()) {
								case SerialPortEvent.BI:
								case SerialPortEvent.OE:
								case SerialPortEvent.FE:
								case SerialPortEvent.PE:
								case SerialPortEvent.CD:
								case SerialPortEvent.CTS:
								case SerialPortEvent.DSR:
								case SerialPortEvent.RI:
								case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
									break;
								case SerialPortEvent.DATA_AVAILABLE:
									InputStream inputStream;
										try {
											inputStream = serialPort.getInputStream();
											byte[] info = new byte[inputStream.available()];
											inputStream.read(info);
											String infoString = new String(info);
											System.out.print(infoString);
										} catch (IOException e) {
											// TODO Auto-generated catch block
											e.printStackTrace();
										}
									
									break;
								}
							}
                        	
                        });
                        
                    } catch (PortInUseException e) {
                    	e.printStackTrace();
                    } catch (TooManyListenersException e) {
						e.printStackTrace();
					}
                    
                    try {
                        outputStream = serialPort.getOutputStream();
                        
                    } catch (IOException e) {}
                    
                    try {
                        serialPort.setSerialPortParams(
                        		115200,
                        		SerialPort.DATABITS_8,
                        		SerialPort.STOPBITS_1,
                        		SerialPort.PARITY_NONE);
                    } catch (UnsupportedCommOperationException e) {}
                    try {
                    	String message = "$PMTK000*32"+"13"+"10";
                    	
                        outputStream.write(message.getBytes());
                        
                    } catch (IOException e) {}
                }
            }
        }
    }
}
